Section: New Results
Retiming for Faust
Participants : Alain Darte, Alexandre Isoard [Master 1 student, ens -l yon] , Yann Orlarey [Grame] .
Faust (Functional Audio Stream) is a formal specification stream-like language designed for real-time signal processing and synthesis. Faust programs are compiled into equivalent C++ programs and optimized for parallel execution. One of the core optimizations in Faust is a preliminary phase called normalization, which amounts to change the delays between operators into an equivalent normalized form used for, among others, redundancy elimination.
We showed that this normalization is actually a special form of retiming, a well-known technique in circuit design and loop transformations. However, an important subtlety needs to be considered: the problem of initialization of signals, which is usually not even mentioned in the retiming literature. We proved that the problem comes from “time-dependent” operators in Faust and that all these operators can be decomposed into combinations of regular operators (in the sense that standard retiming applies) and a single elementary time-dependent operator, called init, which transfers any signal with no modification for time and outputs a constant for time .
This collaboration between Compsys and Grame did not go beyond the Master internship of A. Isoard yet and did not lead to an actual implementation within Faust.